package com.app.biz.mapper;

import java.util.List;
import com.app.biz.domain.BizCityIndustrialEconomics;
import com.app.biz.domain.request.BizCityIndustrialEconomicsRequest;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 分市工业企业主要经济指标Mapper接口
 *
 * @author SangGuangCan
 * @date 2023-12-29
 */
public interface BizCityIndustrialEconomicsMapper
{
    /**
     * 查询分市工业企业主要经济指标
     *
     * @param baseId 分市工业企业主要经济指标主键
     * @return 分市工业企业主要经济指标
     */
    public BizCityIndustrialEconomics selectBizCityIndustrialEconomicsByBaseId(String baseId);

    /**
     * 查询分市工业企业主要经济指标列表
     *
     * @param bizCityIndustrialEconomics 分市工业企业主要经济指标
     * @return 分市工业企业主要经济指标集合
     */
    public List<BizCityIndustrialEconomics> selectBizCityIndustrialEconomicsList(BizCityIndustrialEconomics bizCityIndustrialEconomics);

    /**
     * 新增分市工业企业主要经济指标
     *
     * @param bizCityIndustrialEconomics 分市工业企业主要经济指标
     * @return 结果
     */
    public int insertBizCityIndustrialEconomics(BizCityIndustrialEconomics bizCityIndustrialEconomics);

    /**
     * 修改分市工业企业主要经济指标
     *
     * @param bizCityIndustrialEconomics 分市工业企业主要经济指标
     * @return 结果
     */
    public int updateBizCityIndustrialEconomics(BizCityIndustrialEconomics bizCityIndustrialEconomics);

    /**
     * 删除分市工业企业主要经济指标
     *
     * @param baseId 分市工业企业主要经济指标主键
     * @return 结果
     */
    public int deleteBizCityIndustrialEconomicsByBaseId(String baseId);

    /**
     * 批量删除分市工业企业主要经济指标
     *
     * @param baseIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBizCityIndustrialEconomicsByBaseIds(String[] baseIds);

    /**
     * <p>
     * 查询数据库中数据的日期(year_month字段)并进行去重复操作<br/>
     * 主要用于的是APP端左上角的日期过滤
     * </p>
     *
     * @return 日期的集合
     */
    List<String> getUniqueDatesFromDatabase();

    /**
     * 通过日期查询APP表格中的数据
     * @param request
     * @return
     */
    List<BizCityIndustrialEconomics> getEconomicIndicatorsByDateList(@Param("p") BizCityIndustrialEconomicsRequest request);

    @Select("select bcie.`year_month` from biz_city_industrial_economics as bcie order by bcie.`year_month` desc limit 1")
    String getLatestDateData();

    @Delete("delete from biz_city_industrial_economics")
    void clearAllTableData();

    List<BizCityIndustrialEconomics> selectBizCityIndustrialEconomicsAllData();

    void batchInsertBizCityIndustrialEconomics(@Param("list") List<BizCityIndustrialEconomics> list);

    List<BizCityIndustrialEconomics> selectBizCityIndustrialEconomicsListNoParams();


}
